#include <iostream>
#include <set>

using namespace std;

const int N = 100001;
int T,n, m, k, a;
multiset<int>::iterator it1, it2, it3;
long long ans;

int main()
{
    cin >> T;
    while (T--) {
        cin >> n >> m >> k;
        ans = 0; 
        multiset<int> s;
        for (int i = 0; i < n; i++) cin >> a, s.insert(a);
        if (2 * m > n) m = n / 2;
        while (m--) {
            int d2 = k / 2;
            it2 = s.upper_bound(d2);
            if (it2 == s.begin()) break;
            d2 = *(--it2);

            int d1 = 0, d3 = 0;

            if (it2 != begin()) {
                it1 = it2;
                d1 = *(--it1)
            }

            it3 = it2;
            it3++;
            if (it3 != s.end()) {
                d3 = *it3;
            }

            if (d1 * d2 >= d2 * d3) {
                if (d1 * d2 != 0) {
                    ans += d1 * d2;
                    s.erase(it1);
                    s.erase(it2);
                }
            } else {
                ans += d2 * d3;
                s.erase
            
        }
        cout << ans << endl;
    }
    return 0;
}

